More Related Content
Similar to PenTesterが知っている危ないAWS環境の共通点 (20)
PenTesterが知っている危ないAWS環境の共通点
- 13. アクセスキー
AWS API、AWS CLI、AWS SDK、または Windows
PowerShell 用 AWS ツールから AWS をプログラム
で呼び出す場合に使用する
ルートユーザ
IAMユーザ
アクセスキーID
シークレットアクセスキー
アクセスキーID
シークレットアクセスキー
AWS Cloud
- 24. SSRFを利用したCredentialの窃取
SSRF (Server Side Request Forgery)とは?
【参考】
• SSRF(Server Side Request Forgery)徹底入門
https://blog.tokumaru.org/2018/12/introduction-to-ssrf-server-side-request-forgery.html
攻撃者から直接到達できないサーバーに対する攻撃手法の一種
内部NWのサーバー公開サーバー
攻撃者
脆弱性を悪用するリクエストを送信
本来はアクセスできない内部NWサーバ
に任意のリクエストを送信し、結果を受
け取れてしまう
内部NWに直接アクセスできない
xxx/?URL= http://192.168.1.1
xxx/?URL=http://www.example.com
http://192.168.1.1
- 25. AWS APIを利用してCredentialを取得
IAMロールが紐づいた状態のインスタンスにて、AWS APIへ
一時的なCredentialを要求するリクエストを強制させられ、
EC2のIAMロールに紐づいたCredentialを窃取されてしまう。
AWS側のメタデータAPISSRFの脆弱性が存在するEC2攻撃者
脆弱性を悪用するリクエストを送信 AWSのメタデータAPIに対して
一時的なCredentialを勝手に要求
Credentialを含んだ結果が返るCredentialを窃取
【参考】
• インスタンスメタデータとユーザーデータ
https://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/ec2-instance-
metadata.html
xxx/?URL=http://169.254.169.254/latest/meta-data/…
xxx/?URL=http://www.example.com
http://169.254.169.254/latest/meta-data/…
- 31. 権限昇格されてしまう例~その2~
IAMポリシー 用途
iam:PassRole 存在するロールを資源に割り当て
lambda:CreateFunction 新たなLambda関数を作成
lambda:InvokeFunction Lambda関数を実行
AWS CLIの実行例
//Lambda関数の作成
$ aws lambda create-function --function-name <作成する関数名> --runtime python3.6
--role <割り当てるロールのARN> --handler <作成する関数名>.<スクリプト内で定義した関数名>
--zip-file <Lambda関数を定義したPythonスクリプトをzip化したファイル>
//Lambda関数の実行
$ aws lambda invoke --function-name <作成した関数> <実行結果出力先ファイルパス>
以下の三つの権限が割り当てられており、 権限の高いLambda関数の
IAMロールが存在する場合には、任意のロールを割り当てた新たな
Lambda関数を作成し、呼び出すことによって、権限昇格が可能となる
Lambda以外のマネージドサービスでも同様の手法で権限昇格が可能
- 39. IAMのベストプラクティスに従おう!
【参考】
• AWS IAM ベストプラクティスのご紹介 – AWSアカウントの不正利用を防ぐために
https://aws.amazon.com/jp/blogs/news/aws-iam-best-practice/
• AWS を安全に使うために(IAM のベストプラクティス)
https://dev.classmethod.jp/cloud/sugano-042-iam-best-practices/
IAM のベストプラクティス
https://docs.aws.amazon.com/ja_jp/IAM/latest/UserGuide/best-practices.html
AWS アカウントのルートユーザー アクセス
キーをロックする
悪用を抑制
個々の IAM ユーザーの作成 悪用を抑制
IAM ユーザーへのアクセス許可を割り当てる
ためにグループを使用する
悪用を抑制
最小権限を付与する 悪用を抑制
アクセスレベルを使用して、IAM 権限を確認
する
悪用を抑制
ユーザーの強力なパスワードポリシーを設定 漏洩を防止
特権ユーザーに対して MFA を有効化する 悪用を抑制
Amazon EC2 インスタンスで実行するアプ
リケーションに対し、ロールを使用する
漏洩を防止
ロールを使用したアクセス許可の委任 悪用を抑制
アクセスキーを共有しない 漏洩を防止
認証情報を定期的にローテーションする 漏洩を防止
不要な認証情報を削除する 漏洩を防止
追加セキュリティに対するポリシー条件を使
用する
悪用を抑制
AWS アカウントのアクティビティの監視 悪用を検知
- 44. アクセス許可の境界(Permissions
Boundary)を利用しよう
Permissions PolicyとPermissions Boundaryの2
つのポリシーで、できることできないことの細やか
な制限が可能になる機能
主にattach* 系のiamへの攻撃を防ぐことができる
【参考】
• IAM エンティティのアクセス許可の境界
https://docs.aws.amazon.com/ja_jp/IAM/latest/UserGuide/access_pol
icies_boundaries.html
• [新機能]IAMの委譲権限を制限可能なPermissions Boundaryが登場したので
試してみた
https://dev.classmethod.jp/cloud/aws/iam-permissions-boundary/
- 47. Amazon Guard Duty
機械学習を利用してトラフィックログ等から怪
しい通信を検知するマネージドサービス
アカウントの不正利用などの監視に有効
【参考】
• Amazon GuardDuty
https://docs.aws.amazon.com/ja_jp/guardduty/latest/ug/what-
is-guardduty.html